package be.ipl.Diavolo.uccImpl;

import javax.ejb.EJB;
import javax.ejb.EJBException;
import javax.ejb.Stateless;

import be.ipl.Diavolo.domaine.Joueur;
import be.ipl.Diavolo.ucc.GestionJoueur;
import be.ipl.Diavolo.util.Util;
import be.ipl.Diavolo.dao.JoueurDao;
import be.ipl.Diavolo.exceptions.ArgumentInvalideException;
import be.ipl.Diavolo.exceptions.EnregistrementEchoueException;
import be.ipl.Diavolo.exceptions.JoueurExistantException;
import be.ipl.Diavolo.exceptions.JoueurInexistantException;

@Stateless
public class GestionJoueurImpl implements GestionJoueur {

	@EJB
	private JoueurDao joueurDao;

	@Override
	public Joueur creerJoueur(String pseudo, String motDePasse)
			throws ArgumentInvalideException, EnregistrementEchoueException,
			JoueurExistantException {
		Util.checkString(pseudo);
		Util.checkString(motDePasse);
		if(joueurDao.rechercher(pseudo) != null)
			throw new JoueurExistantException();
		Joueur j = new Joueur(pseudo, motDePasse);
		try {
			j = joueurDao.enregistrer(j);
		} catch (EJBException e) {
			throw new EnregistrementEchoueException();
		}
		return j;
	}

	@Override
	public boolean connexion(String pseudo, String motDePasse)
			throws ArgumentInvalideException, JoueurInexistantException {
		Util.checkString(pseudo);
		Util.checkString(motDePasse);
		Joueur j = joueurDao.rechercher(pseudo, motDePasse);
		if (j == null)
			throw new JoueurInexistantException();
		return true;
	}

	@Override
	public Joueur rechercherJoueur(String pseudo)
			throws JoueurInexistantException, ArgumentInvalideException {
		Util.checkString(pseudo);
		return joueurDao.rechercher(pseudo);
	}
}
